#include "led_drv.h"
#include "systick.h"

static void GpioInit(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;

    /* LED0 PB5 */
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStruct);
    GPIO_SetBits(GPIOB, GPIO_Pin_5);

    /* LED1 PE5 */
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOE, &GPIO_InitStruct);
    GPIO_SetBits(GPIOE, GPIO_Pin_5);
}

void LedDrvInit(void)
{
    GpioInit();
}

void LedDrvSet(LED_NUM_t ledNo, FunctionalState state)
{
    switch (ledNo)
    {
    case LED0:
        if (state)
        {
            GPIO_ResetBits(GPIOB, GPIO_Pin_5);
        }
        else
        {
            GPIO_SetBits(GPIOB, GPIO_Pin_5);
        }
        break;
    case LED1:
        if (state)
        {
            GPIO_ResetBits(GPIOE, GPIO_Pin_5);
        }
        else
        {
            GPIO_SetBits(GPIOE, GPIO_Pin_5);
        }
        break;
    default:
        break;
    }
}

void LedTest(void)
{
    LedDrvSet(LED0, ENABLE);
    LedDrvSet(LED1, DISABLE);
    DelayMs(100);
    LedDrvSet(LED0, DISABLE);
    LedDrvSet(LED1, ENABLE);
    DelayMs(100);
}
